package com.saep.logica;

import com.saep.modelo.Empresa;
import com.saep.persistencia.EmpresaDAO;
import com.saep.persistencia.IEmpresaDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Estudiante
 */
@Stateless
public class LogicaEmpresa implements LogicaEmpresaLocal {

    @EJB
    private IEmpresaDAO EmpresaDAO;

    @Override
    public void registrar(Empresa empresa) throws Exception {
        if (empresa == null) {
            throw new Exception("La Empresa no tiene información");
        }
        if (empresa.getNumeroempresa() == null) {
            throw new Exception("EL numero de la empresa es obligatorio");
        }
        Empresa objetoEmpresa = EmpresaDAO.consultarPorCodigo(empresa.getNumeroempresa());
        if (objetoEmpresa != null) {
            throw new Exception("La empresa a regisrar ya existe");

        }
        EmpresaDAO.registrar(empresa);
    }

    @Override
    public void modificar(Empresa empresa) throws Exception {
        if (empresa == null) {
            throw new Exception("La empresa no tiene información");
        }
        if (empresa.getNumeroempresa() == null) {
            throw new Exception("El numero de la empresa es obligatorio");
        }
        Empresa objetoEmpresa = EmpresaDAO.consultarPorCodigo(empresa.getNumeroempresa());
        if (objetoEmpresa == null) {
            throw new Exception("La empresa a  registrar ya existe");
        }
        if (empresa.getNombreempresa() == null || empresa.getNombreempresa().equals("")) {
            throw new Exception("El nombre de la empresa es obligatorio");
        }
        EmpresaDAO.modificar(empresa);
    }

    @Override
    public void eliminar(Empresa empresa) throws Exception {
        Empresa objetoEmpresa = EmpresaDAO.consultarPorCodigo(empresa.getNumeroempresa());
        if (objetoEmpresa == null) {
            throw new Exception("La empresa no se encuetra en el sistema");
        }
        EmpresaDAO.eliminar(objetoEmpresa);
    }

    @Override
    public List<Empresa> consultarEmpresas() throws Exception {
        return EmpresaDAO.consultarEmpresas();
    }

    @Override
    public Empresa consultarPorCodigo(Long numeroEmpresa) throws Exception {

        if (numeroEmpresa == null) {
            throw new Exception("La empresa que esta consultando no se encuentra en nuestro sistema");
        }
        return EmpresaDAO.consultarPorCodigo(numeroEmpresa);
    }

}
